package com.baidu.control;

// OcrControl  文字识别控制器
// 功能：1.拦截前端请求及提交数据，解析数据 2.返回数据到前端

import com.baidu.aip.util.Base64Util;
import com.baidu.service.AipFaceService;
import com.baidu.service.AipNlpService;
import com.baidu.service.AipSynService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

// 如何把class创建Java的servlet应用程序？
// 1.继承 HttpServlet
// 2.重写结构 doGet\doPost
// 3.声明url地址：没有地址无法实现前后端数据交互 1.web.xml手动配置 2.@WebServlet('/url')
// 4.初始化请求函数

// 需要把web-inf下方的lib导入当前项目的依赖，右键add as lib.....

@WebServlet("/speech_control")
public class SynControl extends HttpServlet {

    @Override // 重写
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp); // 把get请求转发到post处理
    }

    // HttpServletRequest 请求对象 接收请求动作，并保存、解析数据
    // HttpServletResponse 响应对象 做出响应动作，返回数据
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 编码属性初始化
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");

        // 输出对象：可以把数据输出到前端展示
        PrintWriter printWriter = resp.getWriter();
        // 参数结构 name:value 字典
        // 获取参数，用于动作判断 地址 传入字符串
        String action = req.getParameter("action");

        if (action.equals("synthesis")){
            String text = req.getParameter("text");
            String per = req.getParameter("per");
            String spd = req.getParameter("spd");
            String pit = req.getParameter("pit");

            // 百度api使用
            byte[] bytes = AipSynService.getAipSynService().synthesis(text, per, spd, pit);
            // Base64编码处理
            String data = Base64Util.encode(bytes);
            printWriter.write(data);
        }

        if (action.equals("sentiment")){
            String text = req.getParameter("text");
            System.out.println(text);
            printWriter.write(AipNlpService.getAipNlpService().affectiveAnalysis(text));
        }

        printWriter.flush();
        printWriter.close();
    }
}

